package org.liuwei.concucrent.base02_cas.AtomicInteger_02;

/**
 * 
 * @Title: Test.java
 * @Package org.liuwei.concucrent.cas
 * @Description: TODO(用一句话描述该文件做什么)
 * @author 刘伟 15818570028@163.com
 * @date 2016年8月17日 下午9:24:08
 * @version V1.0
 */
public class Test {
	static int count = 0;// 这种方式是 线程不安全的
	AtomicIntegerCounter countNum = new AtomicIntegerCounter();// 这种方式才是 线程安全的

	public static void main(String args[]) {

		new Test().test();
	}

	private void test() {
		Thread[] tt = new Thread[2];
		int i = 0;
		while (i < 2) {

			Threadable threadable = new Threadable();
			tt[i] = new Thread(threadable);
			i++;

		}
		for (int k = 0; k < tt.length; k++) {
			tt[k].start();
			/* 不能下面这个join 这样的话就是等这个线程做完才执行下一次循环 */
			/*
			 * try { tt[k].join(); } catch (InterruptedException e) { // TODO
			 * Auto-generated catch block e.printStackTrace(); }
			 */
		}
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(countNum.getCount());
		System.out.println(count);
	}

	class Threadable implements Runnable {

		public void run() {
			// TODO Auto-generated method stub
			int k = 0;
			while (k < 10000) {
				countNum.increment();
				k++;
				count++;

			}

		}

	}

}